home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / dviware / quicspool / wwfonts / ttextit.mf < prev   
Text File  |  1990-10-01  |  12KB  |  337 lines

  1. % $Header: ttextit.mf,v 1.1 88/01/15 13:15:30 simpson Rel $
  2. % $Log:    ttextit.mf,v $
  3. % Revision 1.1  88/01/15  13:15:30  simpson
  4. % initial release
  5. % Revision 0.2  88/01/14  10:12:30  simpson
  6. % fixed Rule and Underscore
  7. % Revision 0.1  88/01/07  08:15:20  simpson
  8. % beta test
  9. % The Computer Modern Text Italic family (by D. E. Knuth, 1979--1985)
  10.  
  11. mode_setup; font_setup;
  12.  
  13. input itall;  % lower case (minuscules)
  14. if ligs>1: font_coding_scheme:="Troff text";
  15.  input titalig;  % letter ligatures
  16. else: font_coding_scheme:=if ligs=0: "TeX typewriter text"
  17.   else: "TeX text without f-ligatures" fi;
  18.  spanish_shriek=oct"016"; spanish_query=oct"017"; fi
  19. minus=oct"004"; vertical=oct"174";
  20.  
  21. font_slant slant; font_x_height x_height#;
  22. if monospace: font_normal_space 9u#; % no stretching or shrinking
  23.  font_quad 18u#;
  24.  font_extra_space 9u#;
  25.  letter_fit#:=letter_fit:=0;
  26. else: font_normal_space 6u#+2letter_fit#;
  27.  font_normal_stretch 3u#; font_normal_shrink 2u#;
  28.  font_quad 18u#+4letter_fit#;
  29.  font_extra_space 2u#; fi
  30.  
  31. % We need to create space characters with no bitmap for \| and \^.  I put
  32. % them in oct"000" and oct"177" since these characters are not normally
  33. % used by ditroff.
  34. % My own creation (...creation being a generous term), for \|, 1/6 em
  35. beginchar(oct"000", 16/6u#, 0, 0);
  36. endchar;
  37.  
  38. % My own creation, for \^, 1/12 em
  39. beginchar(oct"177", 16/12u#, 0, 0);
  40. endchar;
  41.  
  42. % From the font lasy10.mf, file lasy.mf
  43. cmchar "Box";
  44. beginchar(oct"024",2.1math_axis#+4u#,v_center(7u#));
  45. italcorr math_axis#*slant;
  46. adjust_fit(0,0); pickup rule.nib;
  47. numeric a; a=round(2.1math_axis);
  48. x1=x4=good.x 2u; x2=x3=x1+a;
  49. y3=y4=.5(cap_height-a); y1=y2=y3+a;
  50. draw z1--z2--z3--z4--cycle;
  51. labels(1,2,3,4); endchar;
  52.  
  53. % Stolen from font cmsy10, file symbol.mf
  54. cmchar "Open bullet";
  55. beginchar(oct"025",9u#,v_center(7u#));
  56. adjust_fit(0,0); pickup rule.nib; autorounded;
  57. lft x6=hround u; x2=w-x6; top y8=h; y2=math_axis;
  58. circle_points; draw_circle;  % circle
  59. labels(1,2,3,4,5,6,7,8); endchar;
  60.  
  61. % Stolen from the font cmr10, file accent.mf
  62. cmchar "Umlaut (double dot) accent";
  63. numeric dot_diam#,dot_diam;
  64. dot_diam#=max(dot_size#,cap_curve#);
  65. beginchar(oct"026",9u#,min(asc_height#,10/7x_height#+.5dot_diam#),0);
  66. dot_diam=max(tiny.breadth,hround(max(dot_size,cap_curve)-2stem_corr));
  67. italcorr h#*slant+.5dot_diam#-2.25u#;
  68. adjust_fit(0,0);
  69. pickup tiny.nib; pos1(dot_diam,0); pos2(dot_diam,90);
  70. x1=x2=2.75u; top y2r=h+1;
  71. if bot y2l<x_height+o+slab: y2l:=min(y2r-eps,x_height+o+slab+.5tiny); fi
  72. y1=.5[y2l,y2r]; dot(1,2);  % left dot
  73. pos3(dot_diam,0); penpos4(y2r-y2l,90); y3=y4=y1; x3=x4=w-x1;
  74. dot(3,4);  % right dot
  75. penlabels(1,2,3,4); endchar;
  76.  
  77. % Stolen from the font cmr10.mf, file accent.mf
  78. cmchar "Cedilla accent";
  79. beginchar(oct"027",8u#,0,.875desc_depth#);
  80. adjust_fit(0,0);
  81. x1=.5w+.5u;
  82. if serifs: pickup crisp.nib; pos1(stem,0); pos2(stem,0);
  83.  pos3(vair,90); pos4(stem,0); pos5(vair,-90);
  84.  x1=x2; z3l=z2l; x4=x2+1.5u; x5=x3-1.5u;
  85.  bot y1=-o; bot y2=-vround 2/7d-o; y4=.5[y3,y5]; bot y5=-d-o;
  86.  filldraw stroke z1e--z2e;  % stem
  87.  filldraw stroke z3e{right}...z4e{down}...{left}z5e;  % hook
  88. else: pickup fine.nib; pos1(vair,0); top y1=-o-2;
  89.  pos2(.5[vair,stem],0); bot y2=-d-o; x2=x1-1.25u;
  90.  filldraw stroke z1e--z2e; fi  % diagonal
  91. penlabels(1,2,3,4,5); endchar;
  92.  
  93. % My own creation, a zero width period.  Used for dots in pic(1).
  94. cmchar "Dot for pic boxes";
  95. numeric dot_diam#; dot_diam#=if monospace: 5/4 fi\\ dot_size#;
  96. define_whole_blacker_pixels(dot_diam);
  97. beginchar(oct"030",0,dot_diam#,0);
  98. period_width#:=5u#; define_pixels(period_width);
  99. pickup fine.nib;
  100. pos1(dot_diam,0); pos2(dot_diam,90);
  101. lft x1l=hround(.5period_width-.5dot_diam); bot y2l=0; z1=z2; dot(1,2);  % dot
  102. penlabels(1,2); endchar;
  103.  
  104. % My own creation.  The fractions look like hell.
  105. cmchar "1/4 symbol";
  106. beginchar(oct"021", 12u#, body_height#, paren_depth#);
  107. italcorr body_height#*slant-.5u#;
  108. adjust_fit(0,0); pickup rule.nib;
  109. rt x1=hround(w-u)+eps; top y1=h+eps;
  110. lft x2=hround u-eps; bot y2=-d-eps;
  111. draw z1--z2;  % diagonal
  112. x3=x4=1/4w; y3=38/40h; y4=23/40h; 
  113. draw z3--z4;  % number 1
  114. x5=x6=32/40w; y7=y8=1/8h; y5=-.2d; y6=.37h; x7=26/40w; x8=.85w;
  115. draw z5--z6--z7--z8;
  116. endchar;
  117.  
  118. % My own creation
  119. cmchar "1/2 symbol";
  120. beginchar(oct"022", 12u#, body_height#, paren_depth#);
  121. italcorr body_height#*slant-.5u#;
  122. adjust_fit(0,0); pickup rule.nib;
  123. rt x1=hround(w-u)+eps; top y1=h+eps;
  124. lft x2=hround u-eps; bot y2=-d-eps;
  125. draw z1--z2;  % diagonal
  126. x3=x4=1/4w; y3=38/40h; y4=23/40h; 
  127. draw z3--z4;  % number 1
  128. x5=x9=.65w; x10=x7=.85w; x6=.74w;
  129. y9=y10=-.2d; y6=.37h; y5=.32h; y7=.30h;
  130. draw z5{dir 45}..z6..z7{dir -90}..{dir 225}z9; % number 2
  131. draw z9--z10;
  132. endchar;
  133.  
  134. % My own creation.
  135. cmchar "3/4 symbol";
  136. beginchar(oct"023", 12u#, body_height#, paren_depth#);
  137. italcorr body_height#*slant-.5u#;
  138. adjust_fit(0,0); pickup rule.nib;
  139. rt x1=hround(w-u)+eps; top y1=h+eps;
  140. lft x2=hround u-eps; bot y2=-d-eps;
  141. draw z1--z2;  % diagonal
  142. draw (quartercircle rotated -90 & halfcircle) scaled .1875h shifted 
  143. (.25w,.8562h); % number 3
  144. draw (halfcircle rotated -180 & quartercircle) scaled .1875h shifted 
  145. (.25w,.6687h);
  146. x5=x6=32/40w; y7=y8=1/8h; y5=-.2d; y6=.37h; x7=26/40w; x8=.85w;
  147. draw z5--z6--z7--z8;
  148. endchar;
  149.  
  150. % From the font cmsy10, file sym.mf
  151. iff known vertical: cmchar "Vertical line";
  152. beginchar(vertical,5u#,body_height#,paren_depth#);
  153. italcorr body_height#*slant+.5rule_thickness#-2u#;
  154. adjust_fit(0,0); pickup rule.nib;
  155. x1=x2=good.x .5w; top y1=h+eps; bot y2=-d-eps;
  156. draw z1--z2;  % stem
  157. labels(1,2); endchar;
  158.  
  159. % My own creation
  160. cmchar "Rule";
  161. beginchar(oct"005",12u#,x_height#,.7u#);
  162. italcorr .5x_height#*slant-.5u#;
  163. adjust_fit(0,0);
  164. numeric below_baseline; below_baseline#:=.2u#;
  165. define_pixels(below_baseline);
  166. define_blacker_pixels(thickness);
  167. pickup crisp.nib; pos1(vair,90); pos2(vair,90);
  168. top y1r=top y2r=vround(-below_baseline); rt x2=hround(w+6u#);
  169. lft x1=hround(0);
  170. filldraw stroke z1e--z2e;  % bar
  171. penlabels(1,2); endchar;
  172.  
  173. % My own creation
  174. cmchar "Underscore";
  175. beginchar("_",12u#,x_height#,.7u#);
  176. italcorr .5x_height#*slant-.5u#;
  177. adjust_fit(0,0);
  178. numeric below_baseline; below_baseline#:=.2u#;
  179. define_pixels(below_baseline);
  180. pickup crisp.nib; pos1(vair,90); pos2(vair,90);
  181. top y1r=top y2r=vround(-below_baseline); x2=hround(w);
  182. x1=hround 0;
  183. filldraw stroke z1e--z2e;  % bar
  184. penlabels(1,2); endchar;
  185.  
  186. % Hyphen from cmr10, file comlig.mf
  187. cmchar "Hyphen";
  188. beginchar("-",6u#,x_height#,0);
  189. italcorr .5x_height#*slant-.5u#;
  190. adjust_fit(0,0);
  191. numeric thickness; thickness=if hefty:bar else:.75[hair,stem] fi;
  192. pickup crisp.nib; pos1(thickness,90); pos2(thickness,90);
  193. top y1r=top y2r=vround(.5h+.5thickness); rt x2=hround(w-u)+eps;
  194. if monospace: x2=w-x1 else: lft x1=hround .2u-eps fi;
  195. filldraw stroke z1e--z2e;  % bar
  196. penlabels(1,2); endchar;
  197.  
  198. % My own creation
  199. cmchar "Cent sign";
  200. beginchar(oct"020",18u#,asc_height#,desc_depth#); autorounded;
  201. adjust_fit(if monospace:-3u#,-3u# else: 0,0 fi); pickup rule.nib;
  202. lft x6=hround u; x2=w-x6; top y8=h+o; bot y4=-d-o;
  203. circle_points; 
  204. x9=x11=.65[x6,x4]; x10=x12=.35[x4,x2]; 
  205. y9=y10=.35[y6,y8]; y11=y12=.65[y4,y6];
  206. x13=x14=.5[x6,x2]-.3u; y13=y4+2u; y14=y8-2u;
  207. draw z10..z9..z11..z12; draw z13--z14;
  208. labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14); endchar;
  209.  
  210. % My own creation
  211. cmchar "Copyright";
  212. beginchar(oct"016",18u#,asc_height#,desc_depth#); autorounded;
  213. adjust_fit(if monospace:-3u#,-3u# else: 0,0 fi); pickup rule.nib;
  214. lft x6=hround u; x2=w-x6; top y8=h+o; bot y4=-d-o;
  215. circle_points; draw_circle;  % circle
  216. x9=x11=.65[x6,x4]; x10=x12=.35[x4,x2]; 
  217. y9=y10=.35[y6,y8]; y11=y12=.65[y4,y6];
  218. draw z10..z9..z11..z12;
  219. labels(1,2,3,4,5,6,7,8,9,10,11,12); endchar;
  220.  
  221. % My own creation
  222. cmchar "Registered";
  223. beginchar(oct"017",18u#,asc_height#,desc_depth#); autorounded;
  224. adjust_fit(if monospace:-3u#,-3u# else: 0,0 fi); pickup rule.nib;
  225. lft x6=hround u; x2=w-x6; top y8=h+o; bot y4=-d-o;
  226. circle_points; draw_circle;  % circle
  227. x9=x11=x12=.7[x6,x8]; x10=x13=.3[x4,x2]; 
  228. y12=y13=.5[y4,y6]; y9=.5[y6,y8]; y11=.5[y12,y9]; y10=.5[y11,y9];
  229. x14=.08[x4,x2]; y14=y9; 
  230. path p;
  231. p=z9--z14{dir 0}..z10..{dir 180}z11;
  232. z15=point 2.6 of p;
  233. draw z12--z9; draw z13--z15; draw p;
  234. labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); endchar;
  235.  
  236. % Stolen from the font cmr10, file accent.mf (actually the acute accent)
  237. cmchar "Footmark";
  238. beginchar(oct"015",9u#,min(asc_height#,2x_height#),0);
  239. italcorr h#*slant-if serifs: 1.5 fi u#;
  240. adjust_fit(0,0);
  241. if serifs: pickup crisp.nib; x1+.5stem=hround(w-2u); x2=2/3[x1,w-x1];
  242.  y1+.5stem=h+eps; y2=max(2/3[h,x_height],x_height+o+hair);
  243.  numeric theta; theta=angle(z2-z1)+90;
  244.  pos1(stem,theta); pos2(hair,theta);
  245.  filldraw circ_stroke z1e--z2e;  % diagonal
  246. else: pickup fine.nib; pos1(stem,0); pos2(vair,0);
  247.  rt x1r=hround(w-1.5u); lft x2l=hround(.5w-.25u-.5vair);
  248.  top y1=h; bot y2=vround 2/3[h,x_height];
  249.  filldraw stroke z1e--z2e; fi  % diagonal
  250. penlabels(1,2); endchar;
  251.  
  252. % Stolen from the font cmsy10, file symbol.mf
  253. cmchar "Dagger mark";
  254. beginchar(oct"014",8u#,asc_height#,desc_depth#);
  255. adjust_fit(0,0); pickup fine.nib;
  256. pos1(stem,0); pos2(thin_join,0); pos3(stem,0); pos4(hair,0);
  257. pos5(stem,90); pos2'(thin_join,90); pos6(stem,90); z2'=z2;
  258. x1=x2=x3=x4; x1-.5stem=hround(.5w-.5stem); w:=r:=2x1;
  259. x5-.5stem=hround u; x6=w-x5;
  260. y1+.5stem=h+oo; y2=y5=y6; y3=.57y2; bot y4=-d-o;
  261. y5+.5stem=floor(x_height+.5stem);
  262. filldraw circ_stroke z1e{down}..z2e{down}..z3e{down}..z4e;  % stem
  263. filldraw circ_stroke z5e{right}..{right}z2'e;  % left bulb
  264. filldraw circ_stroke z6e{left}..{left}z2'e;  % right bulb
  265. penlabels(1,2,3,4,5,6); endchar;
  266.  
  267. % Stolen from the font cmr10, file accent.mf (the Scandinavian circle accent)
  268. cmchar "Degree";
  269. beginchar(oct"013",13u#+4/3(asc_height#-x_height#)*slant,asc_height#,0);
  270. adjust_fit(cap_serif_fit#,cap_serif_fit#);
  271. numeric circ_hair,circ_vair;
  272. circ_hair=hround min(hair,u+.5); circ_vair=vround min(vair,(h-x_height)/6+.5);
  273. penpos1(circ_vair,90); penpos3(circ_vair,-90);
  274. penpos2(circ_hair,180); penpos4(circ_hair,0);
  275. x2r=hround(.5w-1.5u-.5circ_hair);
  276. x4r=w-x2r; x1=x3=.5w; y1r=h+apex_o; y2=y4=.5[y1,y3];
  277. y3r=vround(1/3[x_height,h]+apex_o);
  278. penstroke pulled_arc.e(1,2) & pulled_arc.e(2,3)
  279.  & pulled_arc.e(3,4) & pulled_arc.e(4,1) & cycle;  % bowl
  280. penlabels(1,2,3,4); endchar;
  281.  
  282. % My own creation
  283. cmchar "Square";
  284. beginchar(oct"010",9u#,v_center(7u#));
  285. italcorr math_axis#*slant;
  286. adjust_fit(0,0); pickup rule.nib;
  287. draw unitsquare scaled 7u shifted (.5w-7u/2,math_axis-7u/2);
  288. endchar;
  289.  
  290. % Stolen from the font cmsy10, file symbol.mf
  291. cmchar "Bullet";
  292. beginchar(oct"007",9u#,v_center(7u#));
  293. adjust_fit(0,0); pickup rule.nib; autorounded;
  294. lft x6=hround u; x2=w-x6; top y8=h; y2=math_axis; circle_points;
  295. filldraw z8{right}...z1{z2-z8}...z2{down}...z3{z4-z2}...z4{left}
  296.   ...z5{z6-z4}...z6{up}...z7{z8-z6}...cycle;  % circle and interior
  297. labels(1,2,3,4,5,6,7,8); endchar;
  298.  
  299. % Stolen from the font cmsy10, file sym.mf
  300. iff known minus: cmchar "Minus sign";
  301. beginarithchar(minus); pickup rule.nib;
  302. lft x1=hround 1.5u-eps; x2=w-x1; y1=y2=math_axis;
  303. draw z1--z2;  % bar
  304. labels(1,2); endchar;
  305.  
  306. input romanu;  % upper case (majuscules)
  307. input itald;  % numerals
  308. input titalp;  % ampersand, question marks, currency sign
  309. input tpunct;  % punctuation symbols common to roman and italic text
  310. if ligs>0: input tcomlig; fi  % ligatures common with roman text
  311. if ligs<=1: input romsub; fi  % substitutes for ligatures
  312.  
  313. if not monospace:
  314.  k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning
  315.  ligtable "d": "w": "l": "l" kern +u#;
  316.  ligtable "F": "V": "o" kern kk#, "e" kern kk#,
  317.    "u" kern kk#, "r" kern kk#, "a" kern kk#, "A" kern kkk#,
  318.   "K": "X": "O" kern k#, "C" kern k#, "G" kern k#, "Q" kern k#;
  319.  ligtable "T": "y" kern kk#,
  320.   "Y": "e" kern kk#, "o" kern kk#, "r" kern kk#, "a" kern kk#, "u" kern kk#,
  321.   "P": "W": "A" kern kk#;
  322.  ligtable "O": "D": "X" kern k#, "W" kern k#, "A" kern k#,
  323.    "V" kern k#, "Y" kern k#;
  324.  ligtable "A": "R": "n" kern k#, "l" kern k#, "r" kern k#, "u" kern k#,
  325.    "m" kern k#, "t" kern k#, "i" kern k#, "C" kern k#, "O" kern k#, "G" kern k#,
  326.    "h" kern k#, "b" kern k#, "U" kern k#, "k" kern k#, "v" kern k#, "w" kern k#,
  327.    "Q" kern k#, "L": "T" kern kk#, "Y" kern kk#, "V" kern kkk#, "W" kern kkk#,
  328.   "b": "c": "e": "o": "p": "r": "e" kern -u#, "a" kern -u#, "o" kern -u#,
  329.    "d" kern -u#, "c" kern -u#, "g" kern -u#, "q" kern -u#;
  330.  fi
  331. % there are ligature/kern programs for |"f"| in the {\tt romlig} file
  332. % and for |"-"|, |"`"|, and |"'"| in the {\tt comlig} file
  333. bye.
  334.